//var log = air.Introspector.Console.log;
			
var application;

Ext.onReady(function()
	{
		Ext.BLANK_IMAGE_URL = 'inc/js/extjs/ext-2.2.1/resources/images/default/s.gif';
		Ext.QuickTips.init();
		
		var msgBoxWin = Ext.MessageBox.getDialog();
		msgBoxWin.on('show', function()
			{
				this.dd.lock();
			});
		
		application = new Ext.Window
			({
				resizable: false,
				draggable: false,
				closable: false,
				width: 600,
				
				title: 'Contatos - Conectas',
				items:
					[
						new Ext.form.FormPanel
					    	({
						        hash: _PHP_.form.hash,
								url: _PHP_.url.login,
						        method: 'post',
						        
						        title: 'Login',
						        frame: true,
								monitorResize: false,
						        
						        bodyStyle: 'padding: 5px',
						        labelWidth: 75,
						        
						        defaults:
						        	{
										blankText: 'Este campo é obrigatório',
						        	 	maxLengthText: 'Limite do campo: {0} caracteres',
										maxLength: 255,
										width: '95%',
										allowBlank: false
									},
						        items:
									[
										new Ext.form.TextField
								            ({
								                fieldLabel: 'Login',
								                name: 'data[Usuario][login]'
							           		}),
										new Ext.form.TextField
								            ({
								                fieldLabel: 'Senha',
								                name: 'data[Usuario][senha]',
												autoCreate:	{tag: 'input', type: 'password'}
								            }),
										new Ext.form.Hidden
											({
												name: 'data[Usuario][senha]'
											}),
										new Ext.form.Hidden
											({
												name: 'data[Usuario][tries]',
												value: 0
											}),
											{
							                	xtype: 'recaptcha',
												hidden: true,
												style: 'margin-left:84px; padding:10px',
							                    name: 'recaptcha',
							                    id: 'recaptcha_div',
												publickey: _PHP_.form.recaptcha_key,
							                    theme: 'white',
							                    lang: 'pt'
							                }
									],
						        buttons:
							        [
								        {
								            text: 'Login',
								            handler: function()
									            {
													this.doSubmit();
												}
								        }
							        ],
								doSubmit: function()
							        {
										Ext.MessageBox.wait('Aguarde', 'Processando ...', Ext.Ajax.abort);
										this.form.submit
											({
												success: function(form, action)
													{
														var response = Ext.util.JSON.decode(action.response.responseText); 
														var application = form._parent._parent;
														//alert(action.response.responseText); return false;
														
														if(response.success === 'true')
														{
															Ext.MessageBox.wait('Aguarde', 'Processando ...');
															
															application.ajudaWin = new Ext.Window
																({
																	autoCreate: true,
												                    title: 'Ajuda',
																	bodyStyle: 'padding: 5px',
												                    resizable: false,
												                    constrain: true,
												                    constrainHeader: true,
												                    minimizable: false,
												                    maximizable: false,
												                    stateful: false,
												                    modal: true,
												                    shim: true,
												                    width:400,
												                    minHeight: 80,
												                    plain: true,
												                    footer: true,
												                    closable: false,
																	html: '<p>Bem vindo ao sistema de gerenciamento de contatos da Conectas. Você esta acessando a parte do sistema referente a consulta de contatos. Caso deseje administrar algum contato, você deverá acessar a parte administrativa do sistema. Para isso, clique <a class="ajuda" href="'+ _PHP_.url.webroot +'admin/" target="_blank">aqui</a>.</p><p>Para buscar um contato, basta digitar as informações referentes ao mesmo no campo de texto e o sistema apresentará possíveis sugestões. Para visualizar as informações do contato desejado, clique no nome da lista apresentada pelo sistema.</p><p>Caso deseje instalar o sistema em seu computador, certifique-se de que você tenha o <a class="ajuda" href="http://get.adobe.com/air/" target="_blank">Adobe Air</a> instalado em computador e clique na imagem abaixo.</p><p id="badgeHolder"><img id="badge" src="' + _PHP_.url.incroot + 'img/contatos/badge.png"></p>',
																	listeners:
																		{
																			'render': function(_self)
																				{
																					this.addTool
																						({
																							id: 'close',
																							handler: function()
																								{
																									_self.hide(application.getTool('help'));
																								}
																						});
																				},
																			'show':
																				{
																					fn: function()
																						{
																							Ext.each(Ext.query('img[id="badge"]'),function()
																								{
																									new Ext.Element(this).on('click', function()
																										{
																											document.location.replace(_PHP_.url.webroot + 'contatos/getAir');
																										});
																								})
																						},
																					single: true
																				}
																		}
																});
															
															application.removeAll(true);
															application.add
																(
																	new Ext.form.ComboBox
																		({
																			fieldLabel: 'Busca',
																			width: 588,
																			minChars: 1,
																			queryParam: 'termo',
																			valueField: 'id',
																			displayField: 'nome',
																			loadingText: 'Pesquisando ...',
																			pageSize: 10,
																			hideTrigger: true,
																			pageSize: 0,
																			listeners: 
																				{
																					'select': function(combo, record, index)
																						{
																							Ext.MessageBox.wait('Carregando', 'Aguarde ...');
																							var informacoes = application.items.get(1);
											
																							Ext.Ajax.request
																								({
																									url: _PHP_.url.contato + record.get('id') + '/',
																									success: function(response, options)
																									{
																										Ext.MessageBox.hide();
																										var response = Ext.util.JSON.decode(response.responseText);
																										
																										if (response.success === 'true') 
																										{
																											informacoes.el.stopFx();
																											application.el.disableShadow();
																											informacoes.el.slideOut('t', 
																												{
																													callback: function()
																														{
																															informacoes.el.dom.innerHTML = response.contato;
																															informacoes.el.stopFx();
																															informacoes.el.slideIn('t',
																																{
																																	callback: function()
																																		{
																																			Ext.each(Ext.query('a[href="copy"]'), function()
																																				{
																																					var element = new Ext.Element(this);
																																					element.set
																																						({
																																							href: 'javascript:;'
																																						});
																																					element.on('click', function()
																																						{
																																							selectText(this.dom);
																																						});
																																				});
																																			Ext.each(Ext.query('a[href="mail"]'), function()
																																				{
																																					var element = new Ext.Element(this);
																																					element.set
																																						({
																																							href: 'mailto:' + this.getAttributeNS('', 'innerHTML')
																																						});
																																				});
																																			Ext.each(Ext.query('a[href="gmap"]'), function()
																																				{
																																					var element = new Ext.Element(this);
																																					element.set
																																						({
																																							target: '_blank',
																																							href: 'http://maps.google.com/?q=' + element.getAttributeNS('', 'innerHTML').replace(/\(.+\)/gi, '')
																																						});
																																				});
																																				
																																			application.el.enableShadow(true);			
																																		}
																																});
																														}
																												});
																										}
																										else 
																										{
																											Ext.MessageBox.alert('Erro', response.erro);
																										}
																									},
																									failure: function(action)
																										{
																											Ext.MessageBox.alert('Erro', 'Não foi possivel conectar-se com o servidor, por favor tente novamente');
																										}
																								});
																							
																						}
																				},
																			store: new Ext.data.JsonStore
																				({
																					url: _PHP_.url.busca,
																					id: 'id',
																					root: 'rows',
																					totalProperty: 'total',
																					fields: ['id', 'nome']
																				})
																		}),
																	new Ext.Panel
																		({
																			id: 'result',
																			html: '<div />'
																		})
																);
															application.on('afterlayout', Ext.MessageBox.hide, null, {single: true});
															application.setHeight('auto');
															application.doLayout();
														}
														else
														{
															Ext.MessageBox.alert('Erro', response.erro);
															
															if(response.block === 'true')
															{
																return form._parent.blockApp.apply(form._parent);
															}
														}
														
														form.unlockField();
													},
												failure: function(form, action)
													{
														Ext.MessageBox.alert('Erro', 'Não foi possivel conectar-se com o servidor, por favor tente novamente');
														form.unlockField();
													}
											});
							        },
								unlockField: function()
									{
										var senha = this.items.get(1);
												
										senha.setValue('');
										senha.setDisabled(false);
									},
								listeners:
									{
										'render': function(_self)
											{
												this.form._parent = this;
												this.keys =
													{
													    key: Ext.EventObject.ENTER,
													    fn: function()
															{
																_self.buttons[0].handler.apply(_self);
															}
													};
													
												for(var index in this.buttons)
												{
													this.buttons[index].scope = this;
												}
											},
										'beforeaction': function()
											{
												if(this.form.isValid()) 
												{
													var fields = this.items;
													var tries = parseInt(fields.get(3).getValue()) + 1;
													
													if(tries > 2)
													{
														Recaptcha.reload();
														Ext.getCmp(fields.get(4).id).show();
													}
													
													var senha = fields.get(1);
													var password = hex_sha1(hex_sha1(senha.getValue()) + this.hash);
												
													senha.setDisabled(true);
												
													fields.get(2).setValue(password);
													fields.get(3).setValue(tries);
												}
												else 
												{
													Ext.MessageBox.alert('Erro', 'Por favor preencha os campos indicados.');
													return false;
												}
											}
									}
						    })
					],
				tools:
					[{
						id: 'help',
						handler: function()
							{
								if(!application.ajudaWin)
								{
									application.ajudaWin = new Ext.Window
										({
						                    title: 'Licença',
											bodyStyle: 'padding: 0 10px; text-align: justify;',
						                    resizable: false,
						                    minimizable: false,
						                    maximizable: false,
						                    stateful: false,
						                    modal: true,
						                    shim: true,
						                    width:400,
						                    minHeight: 80,
						                    border: false,
						                    closable: true,
											closeAction: 'hide',
											html: '<p>Essa aplicação faz uso gratuito da biblioteca Javascript ExtJS. Em respeito aos termos da licença GPL 3, estabelecidos nos termos do tipo de uso em questão, os códigos fontes das partes desse sistema que fazem uso dessa biblioteca, estão licenciados também pela GPL 3 e podem ser baixados em: <a href="http://code.google.com/p/conectas/" target="_blank">http://code.google.com/p/conectas/</a></p>'
										});
								}
								
								application.ajudaWin.show();
							}
					}],
				listeners:
					{
						'render': function(_self)
							{
								this.form = this.items.get(0);
								this.form._parent = this;
							}
					}
			});
		application.show();
	});